package com.eshore.norm.pojo.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.naming.Name;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * <p>
 * 镜像列表
 * </p>
 *
 * @author chenjl
 * @since 2024-01-05
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class NormImage implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    private Long id;

    /**
     * 一个唯一的、用户定义的镜像 UUID
     */
    @ApiModelProperty(value = "用户定义的镜像 UUID")
    private String imagesId;

    /**
     * 资源池id
     */
    @ApiModelProperty(value = "资源池id")
    private Long configId;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    private Date createDate;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    private Date updateDate;

    /**
     * 一个对镜像数据的MD5哈希
     */
    @ApiModelProperty(value = "一个对镜像数据的MD5哈希")
    @TableField(value = "`checksum`")
    private String checksum;

    /**
     * 镜像容器的格式。示例格式包括：ami、ari、aki、bare、ovf、ova或docker。
     */
    @ApiModelProperty(value = "镜像容器的格式")
    private String containerFormat;

    /**
     * 资源创建的日期和时间。CCYY_MM_DDThh_mm_ss±hh_mm
     */
    @ApiModelProperty(value = "资源创建的日期和时间")
    private String createdAt;

    /**
     * 磁盘的格式。示例格式包括：ami、ari、aki、vhd、vhdx、vmdk、raw、qcow2、vdi、ploop或iso。
     */
    @ApiModelProperty(value = "磁盘的格式")
    private String diskFormat;

    /**
     * 虚拟机镜像文件的URL。
     */
    @ApiModelProperty(value = "虚拟机镜像文件的URL")
    private String file;

    /**
     * 启动镜像所需的磁盘空间，以GB为单位。该值可能为null（JSON的null数据类型）。
     */
    @ApiModelProperty(value = "启动镜像所需的磁盘空间")
    private Integer minDisk;

    /**
     * 启动镜像所需的内存大小，以MB为单位。该值可能为null（JSON的null数据类型）。
     */
    @ApiModelProperty(value = "启动镜像所需的内存大小")
    private Integer minRam;

    /**
     * 镜像的名称。该值可能为null（JSON的null数据类型）。
     */
    @ApiModelProperty(value = "镜像的名称")
    @TableField(value = "`name`")
    private String name;

    /**
     * 用于计算此镜像的镜像数据的安全哈希的算法
     */
    @ApiModelProperty(value = "用于计算此镜像的镜像数据的安全哈希的算法")
    private String osHashAlgo;

    /**
     * 使用os_hash_algo属性的值作为算法名称计算的镜像数据的安全哈希的十六进制摘要
     */
    @ApiModelProperty(value = "使用os_hash_algo属性的值作为算法名称计算的镜像数据的安全哈希的十六进制摘要")
    private String osHashValue;

    /**
     * 该字段控制镜像是否在默认的镜像列表响应中显示
     */
    @ApiModelProperty(value = "该字段控制镜像是否在默认的镜像列表响应中显示")
    private Boolean osHidden;

    /**
     * 镜像所有者的标识符，通常是项目（也称为"租户”）ID
     */
    @ApiModelProperty(value = "镜像所有者的标识符")
    @TableField(value = "`owner`")
    private String owner;

    /**
     * 一个布尔值，必须为false，否则无法删除该镜像。
     */
    @ApiModelProperty(value = "必须为false，否则无法删除该镜像")
    private Boolean protectedX;

    /**
     * 描述虚拟机镜像的模式的URL。
     */
    @ApiModelProperty(value = "描述虚拟机镜像的模式的URL")
    @TableField(value = "`schema`")
    private String schema;

    /**
     * 虚拟机镜像的URL。
     */
    @ApiModelProperty(value = "虚拟机镜像的URL")
    private String self;

    /**
     * 镜像数据的大小，以字节为单位。
     */
    @ApiModelProperty(value = "镜像数据的大小")
    private Integer size;

    /**
     * 镜像状态。
     */
    @ApiModelProperty(value = "镜像状态")
    @TableField(value = "`status`")
    private String status;

    /**
     * 资源更新的日期和时间。
     */
    @ApiModelProperty(value = "资源更新的日期和时间")
    private String updatedAt;

    /**
     * 镜像的虚拟大小。
     */
    @ApiModelProperty(value = "镜像的虚拟大小")
    private Integer virtualSize;

    /**
     * 镜像的可见性，即镜像的访问权限。
     */
    @ApiModelProperty(value = "镜像的可见性")
    private String visibility;

    /**
     * 访问存储在外部存储中的镜像文件的URL。
     */
    @ApiModelProperty(value = "访问存储在外部存储中的镜像文件的URL")
    private String directUrl;


    private String imgSignatureHashMethod;

    private String systemEncrypted;

    private String imgSignatureKeyType;

    private String isregistered;

    private String supportStaticIp;

    private String fileFormat;

    private String imgSignature;

    private String architecture;

    private String dataOrigin;

    private String hwFirmwareType;

    private String osType;

    private String imagetype;

    private String fileName;

    private String cloudinit;

    private String virtualEnvType;

    private String supportKvm;

    private String hwDiskBus;

    private String imgDigestValue;

    private String tags;

    private String platform;

    private String osVersion;

    private String osBit;

    private String adminEncrypted;

    private String locations;

    private String supportKvmVgpu;

    private String supportKvmNpu;

    private String supportKvmGpu;

    private String supportKvmNvmeSsd;

    private String accountCode;

    private String supportKvmHana;

}
